package com.yunban.project.api.text_check.controller;

import com.yunban.project.api.text_check.dto.deepseek.ChatReq;
import com.yunban.project.api.text_check.dto.deepseek.enums.DeepSeekModel;
import com.yunban.project.api.text_check.service.DeepSeekService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import net.lab1024.sa.base.common.annoation.NoNeedLogin;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author: lijiajun
 * @date: 2025-02-26
 * @version: 1.0
 */
@RestController
@Tag(name = "DeepSeek文章排版")
public class DeepSeekArticleFormatController {

    @Resource
    private DeepSeekService deepSeekService;

    @NoNeedLogin
    @Operation(summary = "DeepSeek文章排版")
    @PostMapping("/deepSeek/articleFormat")
    public ResponseDTO<String> articleFormat(@RequestParam("file") MultipartFile file) {

        String markdownStr = this.deepSeekService.word2Markdown(file);
        String promptWord = markdownStr + "\n" + "#能力限制:\n" +
                "\n" +
                "- 将上述markdown格式转换为微信推文HTML代码\n" +
                "- 结构要求：严格保持原文段落顺序，保留所有文字表述（含全角/半角符号、空格、换行），禁止任何内容改写或格式简化。\n" +
                "- 图片处理规则，图片居中显示，左右可适当留白。\n" +
                "- 分析内容，可以对某些部分文字做相应样式上的处理，例如标题、落款等等。\n" +
                "- 样式规范：按照微信推文的样式进行排版，排版需好看，排版风格根据推文内容自行创作，例如科普风格。\n" +
                "- 生成响应式布局适配手机端，添加头图：https://st-file.yunbanos.cn/uploadsoss/file/2025-02-26/9c03861b44c10aaf543dbe97c81a59b6.png。 \n" +
                "- 头图左右撑满无需留白，其他图片左右居中。 \n" +
                "- 推文背景使用：#fbf7e5 \n" +
                "- 字体以及颜色、图片边框、小标题样式可根据主色调进行调整。 \n" +
                "- 输出可直接复制到微信公众号的完整HTML代码。\n" +
                "\n" +
                "#输出要求\n" +
                "\n" +
                "- 绝对禁止对文本内容进行任何形式的二次创作或内容补充\n" +
                "- 不提供文本润色的服务\n" +
                "- 只对与上方markdown文本生成对应的HTML代码\n" +
                "- 对于输出内容里的字符不要做特殊字符转译";
        ChatReq req = new ChatReq();
        req.setMessage(promptWord);
        req.setModel(DeepSeekModel.DEEPSEEK_V3.getModel());
        return ResponseDTO.ok(this.deepSeekService.chat(req));
    }

    @NoNeedLogin
    @PostMapping("/deepSeek/tencentSSEChat")
    @Operation(summary = "word2markdown format")
    public ResponseDTO<String> tencentSSEChat(@RequestParam("file") MultipartFile file) {
        return ResponseDTO.ok(this.deepSeekService.tencentSSEChat(this.deepSeekService.word2Markdown(file), file.getOriginalFilename()));
    }
}